if (this.notificationStack.get_n_children() > 0)
return;
- for (let i = 0; i < this.source.notifications.length; i++) {
- this._appendNotificationToStack(this.source.notifications[i]);
- }
-
+ this.source.notifications.forEach(Lang.bind(this, this._appendNotificationToStack));
this.scrollTo(St.Side.BOTTOM);
},
doneShowingNotificationStack: function() {
- for (let i = 0; i < this._stackedNotifications.length; i++) {
- let stackedNotification = this._stackedNotifications[i];
- let notification = stackedNotification.notification;
+ this.source.notifications.forEach(Lang.bind(this, function(notification) {
notification.collapseCompleted();
- notification.disconnect(stackedNotification.notificationDestroyedId);
- if (notification.actor.get_parent() == this.notificationStack)
- this.notificationStack.remove_actor(notification.actor);
notification.setIconVisible(true);
notification.enableScrolling(true);
- }
- this._stackedNotifications = [];
+ this.notificationStack.remove_actor(notification.actor);
+ }));
},
_notificationAddedToSource: function(source, notification) {
this._appendNotificationToStack(notification);
},
+ _contentUpdated: function() {
+ this.source.notifications.forEach(function(notification, i) {
+ notification.setIconVisible(i == 0);
+ });
+
+ this.emit('content-updated');
+ },
+
_appendNotificationToStack: function(notification) {
- let stackedNotification = {};
- stackedNotification.notification = notification;
- stackedNotification.notificationDestroyedId = notification.connect('destroy', Lang.bind(this, this._notificationDestroyed));
- this._stackedNotifications.push(stackedNotification);
+ notification.connect('destroy', Lang.bind(this, this._contentUpdated));
if (!this.source.isChat)
notification.enableScrolling(false);
- if (this.notificationStack.get_n_children() > 0)
- notification.setIconVisible(false);
- this.notificationStack.add(notification.actor);
notification.expand(false);
+ this.notificationStack.add(notification.actor);
+ this._contentUpdated();
},
// scrollTo:
else if (side == St.Side.BOTTOM)
adjustment.value = adjustment.upper;
},
-
- _contentUpdated: function() {
- this.emit('content-updated');
- },
-
- _notificationDestroyed: function(notification) {
- for (let i = 0; i < this._stackedNotifications.length; i++) {
- if (this._stackedNotifications[i].notification == notification) {
- let stackedNotification = this._stackedNotifications[i];
- notification.disconnect(stackedNotification.notificationDestroyedId);
- this._stackedNotifications.splice(i, 1);
- if (notification.actor.get_parent() == this.notificationStack)
- this.notificationStack.remove_actor(notification.actor);
- this._contentUpdated();
- break;
- }
- }
-
- let firstNotification = this._stackedNotifications[0];
- if (firstNotification)
- firstNotification.notification.setIconVisible(true);
- }
});
Signals.addSignalMethods(SummaryItem.prototype);